using WinBookKeeping.Models;

namespace WinBookKeeping.Data
{
    public interface IBookKeepingRepository
    {
        // 收入相关操作
        Task<List<IncomeInfo>> GetAllIncomesAsync();
        Task<IncomeInfo> GetIncomeByIdAsync(int id);
        Task AddIncomeAsync(IncomeInfo income);
        Task UpdateIncomeAsync(IncomeInfo income);
        Task DeleteIncomeAsync(int id);
        Task<List<IncomeInfo>> GetIncomesByDateRangeAsync(DateTime startDate, DateTime endDate);

        // 支出相关操作
        Task<List<ExpendInfo>> GetAllExpendituresAsync();
        Task<ExpendInfo> GetExpenditureByIdAsync(int id);
        Task AddExpenditureAsync(ExpendInfo expenditure);
        Task UpdateExpenditureAsync(ExpendInfo expenditure);
        Task DeleteExpenditureAsync(int id);
        Task<List<ExpendInfo>> GetExpendituresByDateRangeAsync(DateTime startDate, DateTime endDate);

        // 名目相关操作
        Task<List<RecordInfo>> GetAllItemsAsync();
        Task<RecordInfo> GetItemByIdAsync(int id);
        Task AddItemAsync(RecordInfo item);
        Task UpdateItemAsync(RecordInfo item);
        Task DeleteItemAsync(int id);
    }
} 